# 导入 tkinter 模块
import tkinter as tk

# 定义一个函数来处理按钮点击事件
def array_bucket():
    # 等级数组
    level = ['优秀', '良好', '一般', '可以', '较差']
    # 等级数量
    counts = len(level)
    # 获取输入框中的值，并分割成列表
    input = entry.get().split()
    # 转成浮点数
    arr = [float(item) for item in input]
    # 最大值
    n_max = max(arr)
    # 最小值
    n_min = min(arr)
    # 初始化木桶为二维数组
    bucket = [[] for _ in range(counts)]
    # 桶距 = （最大-最小）/桶数
    size = (n_max - n_min) / counts
    # 开始装桶
    for i in arr:
        # 寻找桶号：（最大值-当前值）/ 桶距
        index = (n_max - i) // size
        if index < 1:
            index = 0
        else:
            index -= 1
        # 索引号必须是整数 
        key = int(index)
        bucket[key].append(i)
    # 显示等级划分结果
    html = ''
    for k in range(len(bucket)):
        html += level[k] + '('
        for kk in bucket[k]:
            html += f'【 {kk} 】'
        html += ')'
    # 将结果显示在标签上
    result_label.config(text=html)

# 创建主窗口
root = tk.Tk()
root.title("桶排序")
root.geometry("400x300")

# 创建输入框和按钮
entry = tk.Entry(root)
entry.insert(0,'10 30 20 58 61 17 90')
entry.pack(pady=10)
tk.Button(root, text="开始评估", command=array_bucket).pack()

# 创建一个标签来显示结果
result_label = tk.Label(root, text="", wraplength=350)
result_label.pack(pady=10)

# 运行主循环
root.mainloop()